<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
        <script>
			var obj = {
				method : function() {
					console.log("method called");
				}
			};
			function My() {
				this.method = function() {
					console.log("my method called");
				};
			}

			var my1 = new My();
			var my2 = new My();
			var my3 = new My();
			// new 할 때마다 function 객체를 만들꺼고 그 객체별로 method라는 것을 가지고 있다.
			// 이때 prototype을 사용하면 인스턴스들이 공유할 수 있다.
			
			My.prototype.methodB = function() {
			    if(this._proto_){
				console.log(this +" : "+ this._proto_.shareData++ + " 공유되고 있는 메서드 --> method chaining에 의해 객체에 없으면 prototype에 와서 찾는다.");
				}else{
				    // data를 set 하는 과정에서는 자기 스코프에 없으면 새로 만들고 세팅하게된다. 
				    // so prototype에 정의하는 property는 readonly를 가지고 하는게 좋겠다.
				  console.log(" : "+ this.shareData++ + " 공유되고 있는 메서드 --> method chaining에 의해 객체에 없으면 prototype에 와서 찾는다.");
                  
				}
			};
            My.prototype.shareData = 10;
			my1.method();
			my1.methodB();
			my2.methodB();
			my3.methodB();
			// prototype을 이용해서 상속을 구현
			// 즉 prototype영역에 Book을 넣어주면 Book을 상속받은 Magazine을 생성할 수 있게된다.
			console.log(my1.shareData);
        </script>
    </head>
    <body>

    </body>
</html>